﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using TCC_Hotel.Serviços.BDServices;
using TCC_Hotel.Entidades;

namespace TCC_Hotel
{
    public partial class SiteMaster : System.Web.UI.MasterPage
    {
        LoginService servico_Login = new LoginService();
        Permissao permissao;

        protected void Page_Load(object sender, EventArgs e)
        {
            //Recupera o usuario corrente
            string usuario = Request.ServerVariables["AUTH_USER"].ToString();
            permissao = servico_Login.RecuperarPermissaoCache(usuario);

            //prepara os nos de controle de estoque
            TreeNode Controle_de_Estoque = new TreeNode();
            TreeNode Compra_de_produto = new TreeNode();
            TreeNode Listar = new TreeNode();
            TreeNode Listar_Faltantes = new TreeNode();

            //prepara os nos de Manter Informacoes
            TreeNode Manter_Informacoes = new TreeNode();
            TreeNode Apartamentos = new TreeNode();
            TreeNode Empresas = new TreeNode();
            TreeNode Fornecedores = new TreeNode();
            TreeNode Funcionarios = new TreeNode();
            TreeNode Hospedes = new TreeNode();
            TreeNode Produtos = new TreeNode();

            //prepara os nos de Reservas
            TreeNode Reservas = new TreeNode();

            //prepara os nos de Fluxo de Hospedes
            TreeNode FluxoHospedes = new TreeNode();
            TreeNode Presentes = new TreeNode();
            TreeNode Antigos = new TreeNode();

            //prepara os nos de Vendas
            TreeNode Vendas = new TreeNode();       
           


            //Encontra todos os nós da treeview e guarda elas em variaveis
            for (int i = 0; i < TreeView.Nodes.Count; i++)
            {
                switch (TreeView.Nodes[i].Value)
                {

//--------------------------------------------------------------------------------------------------------------
//--------------------------------------Controle de estoque------------------------------------------------------                
                    case "Controle de estoque":
                        #region Controle de estoque
                            Controle_de_Estoque = TreeView.Nodes[i];

                            //recupera os filhos do nó
                            for (int j = 0; j < Controle_de_Estoque.ChildNodes.Count; j++)
                            {
                                //atribui os nós filhos
                                switch (Controle_de_Estoque.ChildNodes[j].Value)
                                {
                                    case "Compra de produto": Compra_de_produto = Controle_de_Estoque.ChildNodes[j];
                                        break;
                                    case "Listar": Listar = Controle_de_Estoque.ChildNodes[j];
                                        break;
                                    case "Listar Faltantes": Listar_Faltantes = Controle_de_Estoque.ChildNodes[j];
                                        break;
                                }

                            }
                        #endregion
                        break;

//--------------------------------------------------------------------------------------------------------------
//--------------------------------------Manter Informacoes------------------------------------------------------

                    case "Manter Informacoes":
                        #region Manter Informacoes
                        Manter_Informacoes = TreeView.Nodes[i];

                        //recupera os filhos do nó
                        for (int j = 0; j < Manter_Informacoes.ChildNodes.Count; j++)
                        {
                            //atribui os nós filhos
                            switch (Manter_Informacoes.ChildNodes[j].Value)
                            {
                                case "Apartamentos": Apartamentos = Manter_Informacoes.ChildNodes[j];
                                    break;
                                case "Empresas": Empresas = Manter_Informacoes.ChildNodes[j];
                                    break;
                                case "Fornecedores": Fornecedores = Manter_Informacoes.ChildNodes[j];
                                    break;
                                case "Funcionarios": Funcionarios = Manter_Informacoes.ChildNodes[j];
                                    break;
                                case "Hospedes": Hospedes = Manter_Informacoes.ChildNodes[j];
                                    break;
                                case "Produtos": Produtos = Manter_Informacoes.ChildNodes[j];
                                    break;

                            }

                        }                        
                         #endregion
                        break;
 //--------------------------------------------------------------------------------------------------------------
 //--------------------------------------Reservas------------------------------------------------------
                    case "Reservas": Reservas = TreeView.Nodes[i];                   
                    break;
//---------------------------------------------------------------------------------------------------------------------
//--------------------------------------FluxoHospedes------------------------------------------------------------------
                    case "FluxoHospedes":
                         #region Fluxo de Hospedes
                                FluxoHospedes = TreeView.Nodes[i];

                                //recupera os filhos do nó
                                for (int j = 0; j < FluxoHospedes.ChildNodes.Count; j++)
                                {
                                    //atribui os nós filhos
                                    switch (FluxoHospedes.ChildNodes[j].Value)
                                    {
                                        case "Presentes": Presentes = FluxoHospedes.ChildNodes[j];
                                            break;
                                        case "Antigos": Antigos = FluxoHospedes.ChildNodes[j];
                                            break;
                                    }

                                }
                          #endregion
                        break;
//---------------------------------------------------------------------------------------------------------------------
//--------------------------------------Vendas------------------------------------------------------------------
                     case "Vendas": Vendas = TreeView.Nodes[i];
                        break;


                }

            }

            
            //Faz a validação de estoque e compra de produtos          
            #region Controle de estoque

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Cadastrar_Compra && !permissao.Listar_Estoque)
            {
                TreeView.Nodes.Remove(Controle_de_Estoque);
            }
            else
            {
                if (!permissao.Cadastrar_Compra)
                    Controle_de_Estoque.ChildNodes.Remove(Compra_de_produto);

                if (!permissao.Listar_Estoque)
                {
                    Controle_de_Estoque.ChildNodes.Remove(Listar);
                    Controle_de_Estoque.ChildNodes.Remove(Listar_Faltantes);
                }
            }
           
            #endregion
            
            //Faz a validação de Manter informações        
            #region Manter informações

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Listar_Apartamento && !permissao.Listar_Empresas && !permissao.Listar_Fornecedores && !permissao.Listar_Funcionarios && !permissao.Listar_Hospedes && !permissao.Listar_Produtos)
            {
                TreeView.Nodes.Remove(Manter_Informacoes);
            }            
            else
            {
                if (!permissao.Listar_Apartamento)
                    Manter_Informacoes.ChildNodes.Remove(Apartamentos);
               
                if (!permissao.Listar_Empresas)
                   Manter_Informacoes.ChildNodes.Remove(Empresas);                

                if (!permissao.Listar_Fornecedores)
                    Manter_Informacoes.ChildNodes.Remove(Fornecedores);             

                if (!permissao.Listar_Funcionarios)
                    Manter_Informacoes.ChildNodes.Remove(Funcionarios);              

                if (!permissao.Listar_Hospedes)
                    Manter_Informacoes.ChildNodes.Remove(Hospedes);                

                if (!permissao.Listar_Produtos)
                    Manter_Informacoes.ChildNodes.Remove(Produtos);               
            }

            #endregion

            //Faz a validação de Reservas        
            #region Reservas

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Reservas)
            {
                TreeView.Nodes.Remove(Reservas);
            }
           
            #endregion

            //Faz a validação de Fluxo de Hóspedes    
            #region Fluxo de Hóspedes

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Hospedes_Presentes && !permissao.Hospedes_Antigos)
            {
                TreeView.Nodes.Remove(FluxoHospedes);
            }
            else
            {
                if (!permissao.Hospedes_Presentes)
                    FluxoHospedes.ChildNodes.Remove(Presentes);

                if (!permissao.Hospedes_Antigos)                
                    FluxoHospedes.ChildNodes.Remove(Antigos);
                
            }

            #endregion

            //Faz a validação de Vendas        
            #region Vendas

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Cadastrar_Vendas)
            {
                TreeView.Nodes.Remove(Vendas);
            }

            #endregion
            
            //Faz a validação de gerência        
            #region Gerenciar

            MenuItem Parametros = new MenuItem();
            MenuItem Permissoes = new MenuItem();
            MenuItem Precos = new MenuItem();
            MenuItem Receitas = new MenuItem();

              //Encontra todos os nós do menu e guarda elas em variaveis
            for (int i = 0; i < Menu.Items[0].ChildItems.Count; i++)
            {
                switch (Menu.Items[0].ChildItems[i].Value)
                {
                     case "Parametros":
                        Parametros = Menu.Items[0].ChildItems[i];
                        break;
                     case "Permissoes":
                        Permissoes = Menu.Items[0].ChildItems[i];
                        break;
                     case "Precos":
                        Precos = Menu.Items[0].ChildItems[i];
                        break;
                     case "Receitas":
                        Receitas = Menu.Items[0].ChildItems[i];
                        break;
                }


            }

            //se não tiver permissão para nenhum exclui o nó todo
            if (!permissao.Gerenciar_Parametros && !permissao.Gerenciar_Permissoes && !permissao.Gerenciar_Outras && !permissao.Gerenciar_Receitas)
            {
                Menu.Visible = false; 
            }
            else
            {
                //se não tiver permissão para nenhum exclui o nó todo
                if (!permissao.Gerenciar_Parametros)
                {
                    Menu.Items[0].ChildItems.Remove(Parametros);
                }
                //se não tiver permissão para nenhum exclui o nó todo
                if (!permissao.Gerenciar_Permissoes)
                {
                    Menu.Items[0].ChildItems.Remove(Permissoes);
                }
                //se não tiver permissão para nenhum exclui o nó todo
                if (!permissao.Gerenciar_Outras)
                {
                    Menu.Items[0].ChildItems.Remove(Precos);
                }
                //se não tiver permissão para nenhum exclui o nó todo
                if (!permissao.Gerenciar_Receitas)
                {
                    Menu.Items[0].ChildItems.Remove(Receitas);
                }
           } 
            #endregion

        }

        /// <summary>
        /// Evento de click do botão de trocar senha
        /// </summary>    
        protected void lnkTrocar_Click(object sender, EventArgs e)
        {
            //Redireciona para a pagina de troca de senha
            Response.Redirect("~/Apresentacao/Login/TrocarSenha.aspx");
        }





    }
}
